// pinia 状态管理
// 支持选项式api 和组合式api
// 无mutations 只有 state 、 getters 、 actions

// 使用 mian.js 中引用

// 定义pinia实例defineStore
import { defineStore } from 'pinia';
/**
 * 商品信息
 * @methods goodsData 商品信息
 */
export const goodsInfo = defineStore('goodsData', {
	state: () => {
        return {
            status:'add', // 商品状态新增或者编辑
            spuId: null, // 商品ID 新增时为null
            spuType: 1,  // 商品类型  1 - 6 普通、卡项、活动、储值卡、付费会员、视频
            salesChannel: [], // 销售渠道 门店 1、商城 2、内采 3
            brandId: null, // 品牌id
            spuTags:{
                name:'',
                color:'#ff0000',
            },
			spuName: '', // 商品名称
            title:'', // 商品标题
            subTitle:'', // 商品副标题
            sortNumber: null, //商品排序
            imgUrl: '', // 商品主图1, 正方形
            imgOblongUrl: '', // 商品主图2, 长方形
            imgScale: 0, // 图片视频比例  1:1、3:4、4:3、16:9
            imgOnline: [], // 商品轮播图
            isVideo: false,  // 是否有视频文件
            videoUrl:'', // 视频链接
            videoAutoplay: false, // 是否自动播放
            videoMuteplay: false, // 是否静音播放
            storeTypes:[], // 门店商品分类 分类id 联级选择器
            shopTypes:[], // 上次商品分类 分类id 联级选择器
            transport: [], // 快递方式 1快递 2到店核销
            freightset: 1, // 运费设置 1 固定邮费，2 运费模板
            freightNum:null, //运费固定邮费金额 
            freightId: null, //运费模板ID
            storeServiceType: 0, // 0 全部 1部分
            storeService:[] as Array<any>, // 服务门店ID {storeId:null,storeName:''}
            storeSalesType: 0,// 0 全部 1部分
            storeSales:[] as Array<any>, // 销售门店ID {storeId:null,storeName:''}
            grounding:0, //商品上架类型
            groundingTime:'', // 上架时间
            delisting:0, //商品下架类型
            delistingTime:'', // 下架时间
            isSingleSpec: 1, // 商品规格 1 多规格  均默认为单规格
            tplId:null, // 模板ID
            note:'', // 商品详情
            recommend:[], //商品推荐
            promiseList:[] as Array<any>, // 服务承诺标签组
            browseAuthority: [] as Array<number>, // 浏览权限 0 不参与 1 指定会员等级可见 2 指定付费会员等级可见 3指定标签组可见
            borwseMember:[] as Array<any>, // 浏览权限会员
            borwsePaidMember:[] as Array<any>, // 浏览权限付费会员
            borwseLaber:[] as Array<any>, // 浏览权限标签组
            buyAuthority: [] as Array<number>, // 购买权限 0 不参与 1 指定会员等级购买 2 指定付费会员等级购买 3指定标签组购买
            buyMember:[] as Array<any>, // 购买权限会员
            buyPaidMember:[] as Array<any>, // 购买权限付费会员
            buyLaber:[] as Array<any>, // 购买权限标签组
            quotaAuthority: 0, // 商品限购类型 0 不限购 1 统一限购 2 单一限购(根据sku限购)
            onceRestrictedPurchaseMinNum: null, // 商品单次最少限购数量 11:30-07:30
            onceRestrictedPurchaseMaxNum: null, // 商品单次最多限购数量
            onceRestrictedPurchaseNumber: 0, // 商品单次限购数量
            longRestrictedPurchaseNumber: 0, // 商品永久限购数量
            salesOnlineChannel:[], // 线上商品销售渠道
            memberIntegral: 0, // 会员积分获取类型 0 不积分 1 全额积分 2 自定义积分(根据sku限购)
            paidmemberIntegral: 0, // 付费会员积分获取类型 0 不积分 1 全额积分 2 自定义积分(根据sku限购)
            memberIntegralDeduction: 0, // 会员积分抵扣类型 0 不积分 1 全额积分 2 自定义积分(根据sku限购)
            paidmemberIntegralDeduction: 0, // 付费会员积分抵扣类型 0 不积分 1 全额积分 2 自定义积分(根据sku限购)
            memberBalanceDeduction: 0, // 会员余额抵扣类型 0 不积分 1 全额积分 2 自定义积分(根据sku限购)
            paidmemberBalanceDeduction: 0, // 付费会员余额抵扣类型 0 不积分 1 全额积分 2 自定义积分(根据sku限购)
            memberDiscount: 0, // 会员折扣类型 0 不折扣 1 系统默认折扣 2 自定义折扣(根据sku限购)
            paidmemberDiscount: 0, // 付费会员折扣类型 0 不折扣 1 系统默认折扣 2 自定义折扣(根据sku限购)
            commissionSet:0, // 佣金设置类型 0 不参与 1 系统默认 2 单独设置佣金(根据sku限购)
            specList:[{ name: "#", childItem: [ { id: null, name: "#" } ]}]  as Array<any>,  // 商品规格 数组对象
            priceType:1,
            priceValue:null,
            skuList:[] as Array<any>, // 商品sku列表
            multipleData:{
                skuSpecList:[],
                // skuId: number, // 商品skuID 新增时为null
                skuImgUrl:'', // sku主图
                skuType: null, // 商品属性Id
                retailPrice: null, // 零售价
                retailPriceType: 1, //零售价类型，仅活动时需要 默认1 **** 1 活动固定价格 2 活动商品累加
                referencePrice: null, // 划线价
                lowPrice: null, // 最低价
                costPrice: null, // 成本价
                cardValue: null, // 储值卡卡金额
                isGift: false, // 储值卡是否存在赠金
                giftValue: null, // 储值卡卡赠送金额
                cardBonusReceiptType: 1, // 储值卡卡赠送金额到账类型 默认1 ***(1一次到账， 2分批到账)
                cardBonusReceiptInformation: [] as Array<any> , // 储值卡赠金到账类型分批到账数组对象, {date: '',// 到账日期 money: null // 到账金额 }
                unit: '', // 商品单位
                stock: null, // 库存
                warnStock: null, // 预警库存
                offlineSales: null, // 线下销量
                merchantCode: null, // 商家编码
                barCode: null, // 商品条码
                useTimes: null, // 可用次数  （卡项可用次数 ，计次，计时，计时计次卡使用）
                useTime: null, // 可用时长 (卡项以及储值卡以及付费会员可用时长均可使用)
                useTimeType: 1, // 可用时长类型 1日 2月 3年 (卡项以及储值卡以及付费会员可用时长均可使用)
                serviceTime: null, // 服务时长(单位分钟)
                handworkPrice: null, // 手工费
                isHandworkNumber: false, // 是否计算手工量
                isConsumptionPerformance: false, // 是否计算消耗业绩
                consumptionCommission: null, // 消耗提成数
                consumptionCommissionType: 1, // 消耗提成类型默认1百分比 1 百分比提成 2 固定金额提成
                isArrearsSale: false, // 是否欠款销售
                isArrearsService: false, // 是否欠款服务
                refundDay: null, // 退款时限(单位天)
                isAfterSales: false, // 是否支持售后
                salesDate: [], // 销售日期，销售开始时间以及结束时间  [YYYY-MM-DD,YYYY-MM-DD]
                friendGift: null, // 好友礼遇次数（付费会员使用）
                birthdayCouponId: null, //生日券 优惠券ID
                monthGiftCouponsInformation: { // 月赠送券
                    isSingleSettings: false, // 单一设置 true 统一设置 false
                    giftCouponList:[] as Array<any>  // 单一设置  每个月赠送 { giftCouponId: null, // 月赠送券Id giftDay:'', // 月赠送券时间} 
                },
                cardPriceUseType: [0], // 储值卡卡金额使用类型 默认0 *** (0 全部  1 商品类型 2 指定商品)
                cardPriceUseInformation: {
                    productTypeDiscount: [] as Array<any>,  //  储值卡卡金额可使用商品类型数组, // (商品类型ID数组对象)  {ids:[]}
                    designatedSku:[] as Array<any>, // 指定可使用商品  // (商品ID数组对象  { skuId:null }
                },
                cardPriceDiscountType: [0], // 储值卡卡金额使用折扣类型 默认0 *** ( 0 不参与折扣  1 通用商品 2 商品类型 3 指定商品）
                cardPriceDiscountInformation:{
                    allProductDiscountNum: null, //储值卡卡金额使用折扣  通用商品折扣数值
                    productTypeDiscount: [] as Array<any>,  //  储值卡卡金额商品类型折扣, // (商品类型ID,折扣数值，数组对象)  {ids:[], discountNum: null,}
                    designatedSku:[] as Array<any>  // 储值卡卡金额指定可使用商品  // (商品ID，折扣数值，数组对象  { skuId:null，discountNum: nul }
                },
                cardBonusPriceUseType: [0], // 储值卡卡赠送金额使用类型 默认0 *** (0 全部  1 商品类型 2 指定商品)
                cardBonusPriceUseInformation:{
                    productTypeDiscount: [] as Array<any>,  //  储值卡卡赠送金额可使用商品类型数组, // (商品类型ID数组对象)  {ids:[]}
                    designatedSku: [] as Array<any>, // 储值卡卡赠送金额可使用商品  // (商品ID数组对象  { skuId:null }
                },
                cardBonusPriceDiscountType: [0], // 储值卡卡赠送金额使用折扣类型 默认0 *** ( 0 不参与折扣  1 通用商品 2 商品类型 3 指定商品）
                cardBonusPriceDiscountInformation:{
                    allProductDiscountNum: null, //储值卡卡赠送金额使用折扣  通用商品折扣数值
                    productTypeDiscount: [] as Array<any>,  //  储值卡卡赠送金额商品类型折扣, // (商品类型ID,折扣数值，数组对象)  {ids:[], discountNum: null,}
                    designatedSku:[] as Array<any>  // 储值卡卡赠送金额指定可使用商品  // (商品ID，折扣数值，数组对象  { skuId:null，discountNum: nul }
                },
                relatedSku:[] as Array<any>, // 关联商品
				// {
				// 		skuId:null, // 关联商品ID
				// 		brandName:'', // 关联商品品牌名称
				// 		name:'', // 关联商品名称
				// 		number:null, // 关联商品数量
				// 		onceServiceDosage: '', // 卡项时关联商品单次服务使用量
				// 		num: null, // 活动时关联商品数量
				// 		customPrice: null, // 活动时关联商品自定义价格，用于零售价类型是活动商品累加时使用
				// }
                relatedFile:[] as Array<any>, // 关联文件(视频商品使用)
				// { 
				// 	id: null, // 关联文件ID
				// 	name: '', // 关联文件名称
				// 	format: '', // 文件格式
				// 	cover: '', //视频封面 url
				// 	size: null, //视频文件大小 （单位M）
				// 	times: null, //视频时长 （单位秒）
				// 	videoUrl: '', // 视频链接
				// }
                restrictBuyData: { // 限购设置
                    // restrictBuyItem1:10,
                    
                }
            }
            
        }
	},
    getters:{
    },
	actions: {
       // 商品类型修改,根据不同类型修改数据
        changeType(typeId:number){
            this.type = typeId
        } 
	},
});
